package org.jsola.contract.dao;

import org.apache.ibatis.annotations.Param;
import org.jsola.contract.entity.ContractDO;
import org.jsola.contract.query.ContractQuery;
import org.jsola.contract.vo.ContractListVO;
import org.jsola.contract.vo.ContractStatisticsEmpUnitsVO;
import org.jsola.contract.vo.ContractStatisticsVO;
import org.jsola.orm.mapper.IJsolaMapper;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * 年月周 合同签署统计
 * @author huangrun
 */
@Repository("contractContractStatisticsDAO")
public interface IContractStatisticsDAO extends IJsolaMapper<ContractStatisticsVO> {

    /**
     * 获取当月每天的合同签署统计
     *
     * @param status 状态
     * @param siteId 站点id
     * @return list
     */
    List<ContractStatisticsVO> selectMonthForListCount(@Param("status") Integer status, @Param("siteId") String siteId);

    /**
     * 获取本周每天的合同签署统计
     *
     * @param status 状态
     * @param siteId 站点id
     * @return list
     */
    List<ContractStatisticsVO> selectWeekForListCount(@Param("status") Integer status, @Param("siteId") String siteId);

    /**
     * 获取本年12个月的合同签署统计
     *
     * @param status 状态
     * @param siteId 站点id
     * @return list
     */
    List<ContractStatisticsVO> selectYearForListCount(@Param("status") Integer status, @Param("siteId") String siteId);


    /**
     *时间段内合同签署统计
     * @param status 状态
     * @param startTime 开始时间
     * @param endTime 结束时间
     * @param siteId siteId
     * @param list 遍历的月份
     * @return list
     */
    List<ContractStatisticsVO> selectTwoTimePeriodsForCount(@Param("list")List<String> list,@Param("status") Integer status,@Param("startTime") String startTime, @Param("endTime") String endTime,@Param("siteId")String siteId);

    /**
     * 查询所有用工单位签约
     * @param siteId siteId
     * @return list
     */
    List<ContractStatisticsEmpUnitsVO> selectComForRank(String siteId);

    /**
     * 合同详情查询
     * @param contractQuery 查询字段
     * @param siteId siteId
     * @return 用工单位排名
     */
    List<ContractDO> selectContractRecordDetails(@Param("contractQuery") ContractQuery contractQuery, @Param("siteId") String siteId);
}
